/********************************************************************************
    * 文件名称 ：E53_IS1.c
    * 作     者：小熊派开源社区
    * 版     本：V1.0
    * 编写日期 ：2019-5-27
    * 功     能：E53_IS1扩展板驱动
*********************************************************************************
    * 说    明 ：本例程配套小熊派开源社区开发板使用
    *
    * 淘     宝：https://shop336827451.taobao.com/
    * 论     坛：https://bbs.huaweicloud.com/forum/forum-734-1.html
    * 微信公众号：小熊派开源社区
*********************************************************************************/
#include "E53_IS1.h"
#include <board.h>
#include <rtdevice.h>


#define E53_IS1_BEEP_PWM_DEVICE  "pwm16"
#define E53_IS1_BEEP_PWM_CH      1
static struct rt_device_pwm     *pwm_device = RT_NULL; //定义 pwm 设备指针

static void Infrared_Init(void (*callback)(void *args))
{
    rt_pin_mode(E53_GPIO2 , PIN_MODE_INPUT);//输入模式 
    rt_pin_attach_irq(E53_GPIO2, PIN_IRQ_MODE_RISING_FALLING,callback,RT_NULL);//下降沿检测并调用回调函数
    rt_pin_irq_enable(E53_GPIO2 , PIN_IRQ_ENABLE);//使能中断
    pwm_device = (struct rt_device_pwm *)rt_device_find(E53_IS1_BEEP_PWM_DEVICE);
    if (pwm_device == RT_NULL)
    {
        rt_kprintf("pwm device %s not found!\n", E53_IS1_BEEP_PWM_DEVICE);
    }
    rt_pwm_set(pwm_device, E53_IS1_BEEP_PWM_CH, 2000000, 1000000);
}


/***************************************************************
* 函数名称: E53_IS1_Init
* 说    明: 初始化E53_IS1扩展板
* 参    数: 无
* 返 回 值: 无
***************************************************************/
void E53_IS1_Init(void (*callback)(void *args))
{
  Infrared_Init(callback);
}

/***************************************************************
 * 函数名称: E53_IS1_Read_Data
 * 说    明: 读取数据
 * 参    数: 无
 * 返 回 值: 1 有人 0 没人
 ***************************************************************/
int E53_IS1_Read_Data(void)
{
    if (rt_pin_read(E53_GPIO2) == PIN_HIGH) {
        return 1;
    }
    return 0;
}
/***************************************************************
* 函数名称: E53_IS1_Beep_Set
* 说    明: E53_IS1蜂鸣器报警与否
* 参    数: status,枚举的数据
*                                    OFF,关蜂鸣器
*                                    ON,开蜂鸣器
* 返 回 值: 无
***************************************************************/
void E53_IS1_Beep_Set(E53_IS1_Status status)
{
    if (status == ON)
        rt_pwm_enable(pwm_device, E53_IS1_BEEP_PWM_CH);
    if (status == OFF)
        rt_pwm_disable(pwm_device, E53_IS1_BEEP_PWM_CH); 
}
